﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using NetFrameworkExtensions.Collections;

namespace NetFrameworkExtensions.BusinessLayer
{
  public interface IEntityBase
  {
    IEntityBase Parent { get; }
  }

  public interface IEntity :
    IEntityBase,
    IIdentified,
    IAuditable,
    IConcurrent
  {
  }

  public interface IEntity<TIdentifier> : 
    IEntity,
    IIdentified<TIdentifier>
    where TIdentifier : IEquatable<TIdentifier>
  {
  }

  public interface IEntityList :
    IEntityBase,
    IItemsPage
  {
  }

  public interface IEntityList<TEntity> :
    IEntityList,
    IItemsPage<TEntity>
    where TEntity: class, IEntity
  {
  }
}
